package Queue;

/**
 * Created with IntelliJ IDEA.
 * Description:
 * User: 姚东名
 * Date: 2024-09-07
 * Time: 13:22
 */

import java.util.ArrayDeque;

/**
 * 用桟实现队列：
 * 1. 模拟队列的入队操作：都是放在第一个桟中
 * 2. 模拟队列的出队操作：
 *  2.1 判断第二个桟中 是不是空的？ 如果是空的 需要把第一个桟当中所有的元素
 *      都放在第二个桟中，取出第二个桟中的桟顶元素
 *  2.2 如果不是空的 直接取出第二个桟当中的桟顶元素
 */
public class MyQueueUseStack {
    //创建两个桟：
    public ArrayDeque<Integer> s1;
    public ArrayDeque<Integer> s2;
    public MyQueueUseStack() {
        s1 = new ArrayDeque<>();
        s2 = new ArrayDeque<>();
    }

    public void push(int x) {
        s1.push(x);
    }

    public int pop() {
        if(empty()) {
            return -1;
        }
        if(s2.isEmpty()) {
            while(!s1.isEmpty()) {
                s2.push(s1.pop());
            }
        }
        return s2.pop();
    }

    public int peek() {
        if(empty()) {
            return -1;
        }
        if(s2.isEmpty()) {
            while(!s1.isEmpty()) {
                s2.push(s1.pop());
            }
        }
        return s2.peek();
    }

    public boolean empty() {
        return s1.isEmpty() && s2.isEmpty();
    }
}
